home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 19 / CU Amiga Magazine's Super CD-ROM 19 (1998)(EMAP Images)(GB)[!][issue 1998-02].iso / CUCD / Utilities / WBStars / source / WBStars_colors.c < prev    next >
C/C++ Source or Header  |  1996-07-23  |  1KB  |  62 lines

  1. /* $VER: WBStars_colors.c 1.11 (23.07.1996) */
  2.  
  3. #include "WBStars_include.h"
  4. #include "WBStars_protos.h"
  5. #include "WBStars_gui.h"
  6.  
  7. char    coltemplate[16][3]={
  8.         3,    0,    7,        0,    1,    8,        0,    5,    8,        0,    9,    9,
  9.         0,    10,    6,        0,    11,    3,        0,    12,    0,        5,    13,    0,
  10.         10,    14,    0,        15,    15,    0,        15,    12,    0,        15,    10,    0,
  11.         15,    7,    0,        15,    5,    0,        15,    2,    0,        15,    0,    0};
  12.  
  13. char    coltable[16][16];
  14. char    colavail[256][3];
  15. char    contrast=CONTRAST;
  16.  
  17. void    ColorTable()
  18. {
  19.     short    i,j,k;
  20.     ULONG    color;
  21.     double    dist;
  22.     double    mindist;
  23.     short    r1,g1,b1;
  24.  
  25.     for(i=0;i<anzcolors;i++)
  26.     {
  27.         color=GetRGB4(colmap,(long)i);
  28.         colavail[i][0]=(color>>8)&15;
  29.         colavail[i][1]=(color>>4)&15;
  30.         colavail[i][2]=color&15;
  31.     }
  32.     for(i=0;i<16;i++)
  33.     {
  34.         for(j=0;j<16;j++)
  35.         {
  36.             r1=(contrast*coltemplate[j][0]+16*(16-contrast))*(i+5)/320;
  37.             g1=(contrast*coltemplate[j][1]+16*(16-contrast))*(i+5)/320;
  38.             b1=(contrast*coltemplate[j][2]+16*(16-contrast))*(i+5)/320;
  39.             mindist=-1.0;
  40.             for(k=0;k<anzcolors;k++)
  41.             {
  42.                 if( (k!=bgpen) && (((dist=sqrt(pow((double)(r1-colavail[k][0]),2.0)+pow((double)(g1-colavail[k][1]),2.0)+pow((double)(b1-colavail[k][2]),2.0)))<mindist)||(mindist<0.0)) )
  43.                 {
  44.                     mindist=dist;
  45.                     coltable[i][j]=k;
  46.                 }
  47.             }
  48.         }
  49.     }
  50.     if(gui)
  51.     {
  52.         for(i=0;i<16;i++)
  53.         {
  54.             for(j=0;j<16;j++)
  55.             {
  56.                 SetAPen(WBStarsWnd->RPort,coltable[15-j][15-i]);
  57.                 WritePixel(WBStarsWnd->RPort,i+WBStarsWnd->BorderLeft+3,j+WBStarsWnd->BorderTop+3);
  58.             }
  59.         }
  60.     }
  61. }
  62.